package cn.edu.nuc.ssm.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.edu.nuc.ssm.controller.page.PageControl;
import cn.edu.nuc.ssm.controller.page.Pager;
import cn.edu.nuc.ssm.controller.page.Pc;
import cn.edu.nuc.ssm.dao.RightMapper;
import cn.edu.nuc.ssm.dao.RoleMapper;
import cn.edu.nuc.ssm.dao.SysfunctionMapper;
import cn.edu.nuc.ssm.domain.Right;
import cn.edu.nuc.ssm.domain.Role;
import cn.edu.nuc.ssm.domain.Sysfunction;
import cn.edu.nuc.ssm.service.interfaces.SysRoleService;

@Service
public class SysRoleImpl implements SysRoleService{

	@Autowired
	private RoleMapper rolemapper;
	@Autowired
	private RightMapper rrMapper;
	@Autowired
	private SysfunctionMapper functionMapper;
	   /**
	    * 增加角色
	    */
	@Override
	public int insertRole(Role role) {
       return rolemapper.insert(role);
	}
	/**
	 * //分页（模糊查询，如果查询条件为空，则查询全部。）角色
	 */
	@Override
	public Pager<Role> pageList(String rolename, int current) {

		PageControl pc = new PageControl();
		Integer currindex = 1;
		if(current != 0){
			currindex = current;
		}
		pc.setCurrentindex(currindex);
		
		//查询总记录数。(如果带有名字，则查询改名字的总记录数。(模糊查询)
		int count = rolemapper.count("%"+rolename+"%");
		pc.setRscount(count);
		//初始化分页参数。
		pc = Pc.dealpage(pc);
		//查询具体内容
		List<Role> role = rolemapper.selectRole("%"+rolename+"%",(pc.getCurrentindex()-1)*pc.getPagesize(),
				pc.getCurrentindex()*pc.getPagesize());
		System.out.println("service层集合大小" + role.size());
		Pager<Role> pager = new Pager<Role>();
		pager.setList(role);
		pager.setPagectrl(pc);
		return pager;
	}
	/**
	 * 首先通过id或得角色信息（回馈到页面）
	 */
	@Override
	public Role selectByRoleid(Integer roleid) {
		Role role = rolemapper.selectByPrimaryKey(roleid);
		return role;
	}
	/**
	 * 更新（信息。全部）
	 */
	@Override
	public int updateByPrimaryKey(Role role) {
		int result = rolemapper.updateByPrimaryKey(role);
		return result;
	}
	/**
	 * 删除单个角色信息。（通过主键。）
	 */
	@Override
	public int deleteByPrimaryKey(Integer roleid) {
		return rolemapper.deleteByPrimaryKey(roleid);
	}
	/**
	 * 用户----进入添加用户界面时，初始化角色
	 */
	@Override
	public List<Role> roleListForUser() {
		return rolemapper.roleListForUser();
	}
	
	//为角色添加权限
	/**
	 * 初始化角色权限
	 */
	@Override
	public List<Sysfunction> initfunction(Role role) {
		List<Sysfunction> list = functionMapper.initfunction(role);
		System.out.println(list.size());
		return list;
	}
	/**
	 * 删除角色现有权限，重新添加权限，以实现权限的更新操作
	 */
	public int deleteRight(int roleid) {
		int count = rrMapper.deleteByPrimaryKey(roleid);
		return count;
	}
	/**
	 * 添加权限 ，一个一个添加
	 */
	public int saveright(int roleid, String[] funids) {
		//循环遍历，获取需要的roleRight对象，并添加到list里，实现list的添加
		Right rr = null;
		int count = 0;
		for( int i=0;i<funids.length;i++){
			//声明、创建一个RoleRight对象
			rr = new Right();
			rr.setRoleid(roleid);
			rr.setFid(Integer.parseInt(funids[i]));
			rrMapper.insertList(rr);
			count++;
		}
		return count;
	}
	
	
	//用户登录成功，角色所拥有的权限列表
	@Override
	public List<Sysfunction> initfunction2(int roleid) {
		return functionMapper.initfunction2(roleid);	
	}
	
}
